package com.dc.project.service;

import com.dc.project.entity.bo.TaskDetailItemBo;
import com.dc.project.entity.map.TaskDetailItemMapVo;
import com.dc.project.entity.po.TaskDetailItem;
import com.dc.project.entity.query.TaskDetailItemQuery;
import com.dc.project.entity.vo.TaskDetailItemVo;
import com.own.component.common.base.service.BaseService;

import java.util.List;
import java.util.Map;

/**
 * TaskDetailItemService
 *
 * @author chenxueli
 * @date 2025-03-10 10:55:12
 */
public interface TaskDetailItemService extends BaseService<
        TaskDetailItem,
        TaskDetailItemBo,
        TaskDetailItemVo,
        TaskDetailItemMapVo,
        TaskDetailItemQuery
        > {

    /**
     * 根据任务id获取任务详情列表
     *
     * @param taskId 任务id
     * @return 任务详情列表
     */
    List<TaskDetailItem> listByTaskId(Long taskId);

    /**
     * 根据详情id获取任务详情列表
     *
     * @param detailId 详情id
     * @return 任务详情列表
     */
    List<TaskDetailItem> listByDetailId(Long detailId);

    /**
     * 保存分析内容
     *
     * @param taskId     任务id
     * @param detailId   任务详情id
     * @param contentMap 分析内容
     */
    void put(Long taskId, Long detailId, Map<String, String> contentMap);

    /**
     * 根据模板key创建任务详情
     *
     * @param taskId      任务id
     * @param detailId    任务详情id
     * @param templateKey 模板key
     */
    void createByTemplateKey(Long taskId, Long detailId, String templateKey);

    /**
     * 获取最近的一条没有生成的数据
     *
     * @return 任务详情
     */
    TaskDetailItem getFirstNotHandleItem();

    /**
     * 根据项目id更新状态
     *
     * @param itemId 项目id
     * @param status 状态
     */
    void updateStatusByItemId(Long itemId, int status);

    /**
     * 根据详情id更新状态
     *
     * @param detailId 详情id
     * @param status   状态
     */
    void updateStatusByDetailId(Long detailId, int status);

    /**
     * 根据任务id更新状态
     *
     * @param taskId 任务id
     * @param status 状态
     */
    void updateStatusByTaskId(Long taskId, int status);

}

